Skip to content

Canonical CI: grouped-tests.yml + root test/test_groups.toml#82

Merged
ChrisRackauckas merged 4 commits into
SciML:masterfrom
ChrisRackauckas-Claude:grouped-tests-ci
Jun 10, 2026
Merged

Canonical CI: grouped-tests.yml + root test/test_groups.toml#82
ChrisRackauckas merged 4 commits into
SciML:masterfrom
ChrisRackauckas-Claude:grouped-tests-ci

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Summary

Converts the root Tests workflow into the canonical thin caller of SciML/.github grouped-tests.yml@v1, with the full version/OS/group matrix declared once in test/test_groups.toml.

Tests.yml is now:

jobs:
  tests:
    uses: "SciML/.github/.github/workflows/grouped-tests.yml@v1"
    secrets: "inherit"

The on: triggers and concurrency: block are preserved verbatim. All reusable-workflow inputs are at their defaults (GROUP env name, check-bounds: yes, coverage on, src,ext), so no with: block is needed.

Category B refactor (inline Aqua/JET split into a QA group)

Aqua, JET, and ExplicitImports previously ran inline via include("qa.jl") in runtests.jl, so they re-ran on every functional matrix cell. They are now isolated into a dedicated QA group:

  • Core group (default GROUP): functional tests stay — samplers, BigFloat support, PassthroughRNG dispatch, and the AllocCheck allocation tests.
  • QA group (GROUP=="QA"): test/qa/qa.jl holds the Aqua/JET/ExplicitImports checks, run in an isolated test/qa environment. runtests.jl does Pkg.activate(test/qa) + Pkg.develop(repo root) + Pkg.instantiate() before including it. test/qa/Project.toml carries only Aqua/JET/ExplicitImports/Test/Random plus the package via [sources] path = "../..", with julia = "1.10".

Matrix match

Old Tests.yml matrix: version ∈ {1, lts, pre} × os ∈ {ubuntu-latest, macos-latest, windows-latest} = 9 cells, each running the full suite (functional + inline QA).

New matrix from test/test_groups.toml (verified statically with compute_affected_sublibraries.jl --root-matrix):

group versions os
Core lts, 1, pre ubuntu-latest, macos-latest, windows-latest
QA lts, 1 ubuntu-latest

→ Core reproduces the old 9 functional cells exactly (3 versions × 3 OS). QA is newly broken out as 2 dedicated cells (lts, 1 on ubuntu); previously these checks ran inline within each of the 9 cells. Functional coverage is preserved 1:1.

Project.toml metadata

The two common Aqua metadata preconditions were already satisfied: [compat] julia = "1.10" (LTS floor) and every [extras] dependency already has a [compat] entry. No change required.

Notes

  • QA group is newly wired; Aqua/JET run in CI — any failures will be triaged in a follow-up. No test or check was skipped, silenced, or excluded.
  • Verified statically only (TOML/YAML parse, Julia parse, root-matrix computation). Tests/Aqua/JET were not run locally.

Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

ChrisRackauckas and others added 4 commits June 9, 2026 18:02
Convert the root Tests workflow to the canonical thin caller of
SciML/.github grouped-tests.yml@v1, with the version/OS/group matrix
declared once in test/test_groups.toml.

Category B refactor: Aqua/JET/ExplicitImports previously ran inline in
runtests.jl on every functional matrix cell. They are now isolated into a
dedicated QA group:
- functional tests (samplers, BigFloat, PassthroughRNG, AllocCheck) stay
  under the Core group (default GROUP);
- Aqua/JET/ExplicitImports moved to test/qa/qa.jl, gated on GROUP=="QA",
  running in an isolated test/qa environment (Pkg.activate + develop root +
  instantiate);
- test/test_groups.toml declares Core on [lts,1,pre] x
  [ubuntu,macos,windows] (preserving the old 3-version x 3-OS coverage) and
  QA on [lts,1].

Tests.yml on:/concurrency: preserved verbatim; all reusable-workflow inputs
are defaults (GROUP, check-bounds=yes, coverage, src/ext) so no with: block
is needed.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
test/runtests.jl does `using Pkg` for the QA group's Pkg.activate, but
Pkg was not declared in the Core test environment (project='.'), so the
Core job died with `ArgumentError: Package Pkg not found in current path`.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move `using PoissonRandom`, `import Distributions`, and
`using Test, Statistics` out of the in-block else branch to top level
so the @testset/@test macros are defined before the if-block (which
uses them inline) is macro-expanded as a single unit.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The `extras` sub-check of Aqua.test_deps_compat fails because the test-only
extra `Pkg` has no [compat] entry in Project.toml. Disable only that sub-check
(deps/weakdeps still run) and record the finding as @test_broken so the QA
group is green. Tracked in SciML#83.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 10, 2026 09:48
@ChrisRackauckas ChrisRackauckas merged commit 46792db into SciML:master Jun 10, 2026
9 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants